home *** CD-ROM | disk | FTP | other *** search
- /*-- AutoRev header do NOT edit!
- *
- * Program : Blocks.c
- * Copyright : Copyright © 1991-92 Jaba Development
- * Author : Jan van den Baard
- * Creation Date : 04-Apr-92
- * Current version : 2.0
- * Translator : Dice v2.06.40
- *
- * REVISION HISTORY
- *
- * Date Version Comment
- * --------- ------- ------------------------------------------
- * 04-Apr-92 2.0 Text block routines. (rewrite)
- *
- *-- REV_END --*/
-
- #include "View.h"
-
- Prototype void SetMark( UWORD );
- Prototype void UnSetMark( UWORD );
- Prototype void JumpMark( UWORD );
- Prototype void SaveBlock( WORD );
- Prototype long CheckBlock( UWORD );
-
- extern struct TextBlock vwBlocks[ 10 ];
- extern struct AsciiText *vwText;
- extern struct Window *vwWindow;
- extern struct Line *vwFirst, *vwLast;
- extern UBYTE ClearStr[], vwFile[], vwPath[], vwPatt[], vwName[];
- #ifndef __DETACH
- extern ULONG vwArgs[];
- #else
- extern ULONG *vwArgs;
- #endif
- extern ULONG vwShown;
-
- extern __far struct Custom custom;
-
- long CheckBlock( UWORD mark )
- {
- UBYTE errl[ 31 ];
-
- if ( ! vwBlocks[ mark ].TopLine || ! vwBlocks[ mark].BottomLine ) {
- sprintf(( char * )&errl[ 0 ], "Block %-2.2ld not marked !", mark + 1 );
- Error( errl );
- return( FALSE );
- }
- return( TRUE );
- }
-
- void SetMark( UWORD mark )
- {
- struct Line *line, *lt;
- UBYTE errl[ 31 ];
-
- if ( ! vwText ) return;
-
- if ( ! vwBlocks[ mark ].TopLine) {
- vwBlocks[ mark ].TopLine = vwFirst;
- return;
- } else if ( ! vwBlocks[ mark ].BottomLine ) {
- vwBlocks[ mark ].BottomLine = vwLast;
-
- for( line = vwText->First; line->Next; line = line->Next ) {
- if ( line == vwBlocks[ mark ].TopLine) break;
- else if ( line == vwBlocks[ mark ].BottomLine) {
- lt = vwBlocks[ mark ].TopLine;
- vwBlocks[ mark ].TopLine = line->Prev;
- vwBlocks[ mark ].BottomLine = lt->Next;
- break;
- }
- }
- sprintf(( char * )&errl[ 0 ], "Block %-2.2ld marked !", mark + 1 );
- ErrorLine( errl );
- return;
- } else {
- sprintf(( char * )&errl[ 0 ], "Block %-2.2ld already marked !", mark + 1 );
- Error( errl );
- return;
- }
- }
-
- void UnSetMark( UWORD mark )
- {
- UBYTE errl[ 31 ];
-
- if ( ! vwText ) return;
-
- vwBlocks[ mark ].TopLine = vwBlocks[ mark ].BottomLine = NULL;
-
- sprintf(( char * )&errl[ 0 ], "Block %-2.2ld unmarked !", mark + 1 );
- ErrorLine( errl );
- }
-
- void JumpMark( UWORD mark )
- {
- struct Line *line;
-
- if ( ! vwText ) return;
-
- if ( ! CheckBlock( mark ))
- return;
-
- vwFirst = vwBlocks[ mark ].TopLine;
- Inform( ClearStr );
- DisplayText();
-
- vwShown = 0L;
-
- for ( line = vwText->First; line != vwLast; line = line->Next )
- vwShown += line->Size;
-
- Percentage();
- }
-
- void SaveBlock( WORD mark )
- {
- struct BuffIO *ofile = NULL;
- struct Line *f, *t;
- ULONG ret;
- UBYTE *title;
-
- if ( mark >= 0 ) {
- if ( ! CheckBlock( mark ))
- return;
- } else {
- if ( ! vwText )
- return;
- }
-
- if( mark >= 0 ) title = "Save textblock as...";
- else title = "Save text as...";
-
- if( vwArgs[ 11 ] ) ON_SPRITE;
-
- ret = FileRequest( vwWindow, title, vwFile, vwPath, vwPatt, FR_SAVE );
-
- if ( vwArgs[ 11 ] ) OFF_SPRITE;
-
- if ( ! ret ) {
- InfoLine();
- return;
- }
-
- Busy();
- if ( ofile = BOpen( vwName, MODE_NEWFILE )) {
- ErrorLine( "Writing..." );
- if ( mark >= 0 ) {
- f = vwBlocks[ mark ].TopLine;
- t = vwBlocks[ mark ].BottomLine;
- } else {
- f = vwText->First;
- t = vwText->Last->Next;
- }
-
- for( ; f != t; f = f->Next )
- BPutS( ofile, f );
-
- if( BClose( ofile ) != ASE_OK)
- Error( "Write Error." );
- } else
- Error( "Can't open write file." );
-
- Ready();
- InfoLine();
- }
-